
#ifndef _TTG_PIPELINE_SUBSYSTEM_
#define _TTG_PIPELINE_SUBSYSTEM_

namespace ttg
{
	namespace pipeline
	{
		//Defenition of used class.
		template <class InType, class OutType>
		class NodeWrapper;

		//Base class for essences, which encapsulates dependent nodes.
		template <class InType, class OutType>
		class SubSystem
		{
			private:
				NodeWrapper<InType, OutType> wrapper;
			protected:
				//Creates SubSystem for given nodes.
				inline SubSystem(NodeWrapper<InType, OutType> &wr)
					:wrapper(wr)
						{ /*nothing*/ }
			public:
				//Returns wrapper, which represents current SubSystem.
				inline NodeWrapper<InType, OutType> &getWrapper()
						{ return wrapper; }
		};
	}
}

#endif